Korg Wavestation SR MIDI System Exclusive Format 

This system exclusive format contains data for the entire Wavestation 
product family, including the Wavestation SR, the Wavestation A/D, the 
Wavestation EX, and the original Wavestation keyboard.

1.0 Header Format

The following is a description of the Wavestation system exclusive header. 
This format is common for all Wavestation system exclusive messages.

These bytes are excluded from the computation of the checksum. 

	11110000 (F0)	System Exclusive status byte
	01000010 (42)	Korg ID
	0011nnnn (3n)	Format ID, n = channel number
	00101000 (28)	Wavestation device ID
	0mmmmmmm		Message type
	
1.1  Message Type Codes

The following table contains a list of the message types in hex.

	41	Parameter Change Message
	42	Parameter Change Message Expanded
	43	Parameter Change Message SR Expanded 
	40	Single Patch Dump
	49	Single Performance Dump
	4C	All Patch Dump (within bank)
	4D	All Performance Dump (within bank)
	50	All Data Dump (system, patch, performance, wave sequence,
		multisets, performance map, scales)
	51	System Setup Dump
	54	All Wave Sequence Dump
	5A	Micro Tune Scales Dump
	5C	System Setup Dump Expanded
	55	Multi Mode Setup Dump
	5D	Performance Map Dump 
	5E	Multi Mode Setup Dump Expanded
	5F	Performance Map Dump Expanded
	60	Performance Map Dump SR Expanded
	61	System Setup Dump SR Expanded
	62	Multi Mode Setup Dump SR Expanded

	23	Data Load Completed
	24	Data Load Error
	11	Patch Write Command
	1A	Performance Write Command
	21	Write Complete Message
	22	Write Error Message
	5B	Multi Mode Setup Select
	63	Multi Mode Setup Select SR Expanded

	06	Multi Mode Setup Dump Request
	07	Performance Map Dump Request
	08	Micro Tune Scales Dump Request
	0C	Wave Sequence Data Dump Request
	0E	System Setup Dump Request
	0F	All Data Dump Request
	10	Single Patch Dump Request
	19	Single Performance Dump Request
	1C	All Patch Dump Request
	1D	All Performance Dump Request

1.2 Binary data format

All 8 bit binary data is transmitted as two bytes in the following format:

		0000LLLL	Low 4 bits of the data
		0000HHHH	High 4 bits of the data
		
So that a byte is reconstructed as follows:

		HHHHLLLL 
		
This is referred to as Nibble data.

2.0 Transmit and Receive Messages

The following messages are both transmitted from the Wavestation and 
received by the Wavestation.

2.1 Data Messages

2.1.1 Single Patch Data

The following message contains a dump of a single patch. On reception the 
patch is placed in the edit buffer. To transfer a patch to a RAM location 
use the patch write command.

	F0 42 3n 28		Wavestation sysex header
	01000000 (40)	Single Patch Dump
	0000xxxx (0x)	Bank number (0..11)
	0xxxxxxx		Patch number.
	Nibble data		Patch structure (section 5.2)
	0ccccccc		Checksum
	11110111 (F7)		End of exclusive.

2.1.2 Single Performance Data 

The following message contains a dump of a single performance. On reception 
the performance is placed in the edit buffer. To place the performance in 
memory use the performance write command.

	F0 42 3n 28		Wavestation sysex header
	01001001 (49)	Single Performance Dump
	0000xxxx (0x)	Bank number (0..11)
	0xxxxxxx		Performance number
	Nibble data		Performance structure (section 5.1)
	0ccccccc		Checksum
	11110111 (F7)	End of exclusive

2.1.3 All Patch Data

This message contains all 35 patches within the bank specified.

	F0 42 3n 28		Wavestation sysex header
	01001100 (4C)	All Patch Dump
	0000xxxx (0x)	Bank number (0..11)
	Nibble data		35 patch structures (section 5.2)
	0ccccccc		Checksum
	11110111 (F7)	End of exclusive

2.1.4 All Performance Data

This message contains all 50 performances within the bank specified.

	F0 42 3n 28		Wavestation sysex header
	01001101 (4D)	All Performance Dump
	0000xxxx (0x)	Bank number (0..11)
	Nibble data		50 performance structures (section 5.1)
	0ccccccc		Checksum
	11110111 (F7)	End of exclusive

2.1.5 System Setup Parameter Data

	This message is always accompanied by the System Setup Expanded and 
System Setup SR Expanded data (as described below).

	F0 42 3n 28		Wavestation sysex header
	01010001 (51)	System Setup Dump
	Nibble data		System structure (section 5.8)
	0ccccccc		Checksum
	11110111 (F7)	End of exclusive

2.1.6 System Setup Parameter Expanded Data 

This message always accompanies the System Setup data (as described above).

	F0 42 3n 28		Wavestation sysex header
	01011100 (5C)	System Setup Expanded Dump
	Nibble data		System Expanded structure (section 5.9)
	0ccccccc		Checksum
	11110111 (F7)	End of exclusive
2.1.7 System Setup Parameter SR Expanded Data 

This message always accompanies the System Setup data (as described above).

	F0 42 3n 28		Wavestation sysex header
	01100001 (61)	System Setup SR Expanded Dump
	Nibble data		System Setup SR Expanded Structure (section 5.10)
	0ccccccc		Checksum
	11110111 (F7)	End of exclusive

2.1.8 Wave Sequence Data

	F0 42 3n 28		Wavestation sysex header
	01010100 (54)	Wave Sequence Dump
	0000xxxx (0x)	Bank number (0..11)
	Nibble data		Ws_block structure (section 5.6)
	0ccccccc		Checksum
	11110111 (F7)	End of exclusive

2.1.9 Multi Mode Setup Data
	
In this data, references to RAM3 and ROM 4-10 are changed to ROM11 for 
compatability with the keyboard. 	This message is always accompanied by the 
Multi Mode Setup Expanded and Multi Mode Setup SR Expanded data (as 
described below).

	F0 42 3n 28		Wavestation sysex header
	01010101 (55)	Multi Mode Setup Dump
	Nibble data		Multiset_block structure (section 5.3)
	0ccccccc		Checksum
	11110111 (F7)	End of exclusive

2.1.10 Multi Mode Setup Expanded Data

In this data, references to RAM3 are allowed, but references to ROM 4-10 are 
changed to ROM11 for compatability with the Wavestation A/D. This message 
always accompanies the Multi Mode Setup and Multi Mode Setup SR Expanded 
data (as described above).

	F0 42 3n 28		Wavestation sysex header
	01011110 (5E)	Multi Mode Setup Expanded Dump 
	Nibble data		Multi Mode Setup Expanded structure (section 5.4)
	0ccccccc		Checksum
	11110111 (F7)	End of exclusive

2.1.11 Multi Mode Setup SR Expanded Data

In this data, references to RAM3 and ROM 4-10 are allowed. This message always 
accompanies the Multi Mode Setup and Multi Mode Setup Expanded data (as 
described above).
	F0 42 3n 28		Wavestation sysex header
	01100010 (62)	Multi Mode Setup SR Expanded Dump
	Nibble data		Multi Mode Setup SR Expanded Data Structure (section 5.5)
	0ccccccc		Checksum
	11110111 (F7)	End of exclusive
2.1.12 Performance Map Data

In this data, references to RAM3 and ROM 4-10 are changed to ROM11 for 
compatability with the keyboard. This message is always accompanied by the  
Performance Map Expanded and Performance Map SR Expanded data (as described 
below).

	F0 42 3n 28		Wavestation sysex header
	01011101 (5D)	Performance Map Dump 
	Nibble data		Performance Map_block structure (section 5.11)
	0ccccccc		Checksum
	11110111 (F7)	End of exclusive

2.1.13 Performance Map Expanded Data

In this data, references to RAM3 are allowed, but references to ROM 4-10 are 
changed to ROM11 for compatability with the Wavestation A/D. This message 
always accompanies the Performance Map Data(as described above).

	F0 42 3n 28		Wavestation sysex header
	01011111 (5F)	Performance Map Dump Expanded
	Nibble data		Performance Map_block structure (section 5.12)
	0ccccccc		Checksum
	11110111 (F7)	End of exclusive

2.1.14 Performance Map SR Expanded Data

In this data, references to RAM3 and ROM 4-10 are allowed.This message 
always accompanies the Performance Map Data (as described above).

	F0 42 3n 28		Wavestation sysex header
	01100000 (60)	Performance Map SR Expanded Dump
	Nibble data		Performance Map_block structure (section 5.13)
	0ccccccc		Checksum
	11110111 (F7)	End of exclusive

2.1.15 Micro Tune Scale Data

	F0 42 3n 28		Wavestation sysex header
	01011010 (5A)	Micro Tune Scale Dump
	Nibble data		Micro Tune Scale Data Structures (section 5.7)
	0ccccccc		Checksum
	11110111 (F7)	End of exclusive

2.1.16 All Data

This message is always accompanied by the Multi Mode Setup Expanded and 
Multi Mode Setup SR Expanded data, the Performance Map Expanded and 
Performance Map SR Expanded data, the System Setup Expanded and System Setup 
SR Expanded data, and the RAM3 Performance, Patch, and Wave Sequence data.

	F0 42 3n 28		Wavestation sysex header
	01010000 (50)	All Data Dump
	Nibble data		All_data structure (section 5.14)
	0ccccccc		Checksum
	11110111 (F7)	End Of exclusive

2.1.17 Parameter Change Messages

The normal parameter change messages include parameters numbered 0 - 379.

	F0 42 3n 28		Wavestation sysex header
	01000001 (41)	Parameter Change Message
	0LLLLLLL		LSB of parameter number (section 5.12)
	0HHHHHHH		MSB of parameter number
	0xxxxxxx		Parameter value in 7 bit ASCII 
	    .			(16 characters max) (7F = space)
	    .			
	00000000 (00)	ASCII null termination
	11110111 (F7)	End of exclusive

2.1.18 Parameter Change Messages Expanded

The expanded parameter change messages include parameters numbered 380 - 
406. They are otherwise completely the same as the normal parameter change 
messages.

	F0 42 3n 28		Wavestation sysex header
	01000010 (42)	Parameter Change Message Expanded
	0LLLLLLL		LSB of parameter number (section 5.12)
	0HHHHHHH		MSB of parameter number
	0xxxxxxx		Parameter value in 7 bit ASCII 
	    .			(16 characters max) (7F = space)
	    .			
	00000000 (00)	ASCII null termination
	11110111 (F7)	End of exclusive

2.1.19 Parameter Change Messages SR Expanded

The SR expanded parameter change messages include parameters numbered 407 
and greater. They are otherwise completely the same as the normal parameter 
change messages.

	F0 42 3n 28		Wavestation sysex header
	01000011 (43)	Parameter Change Message SR Expanded
	0LLLLLLL		LSB of parameter number (section 5.12)
	0HHHHHHH		MSB of parameter number
	0xxxxxxx		Parameter value in 7 bit ASCII 
	    .			(16 characters max) (7F = space)
	    .			
	00000000 (00)	ASCII null termination
	11110111 (F7)	End of exclusive

2.1.20 Multi-Mode Setup Select

Sent whenever the current multi set is changed. On reception it will change 
the current multi setup.

	F0 42 3n 28		Wavestation sysex header
	01011011 (5B)	Multi Mode Setup Select
	0xxxxxxx		Multi Mode Setup number
	11110111 (F7)	End of exclusive

2.1.21 Multi-Mode Setup Select SR Expanded

Sent whenever the current Multiset is changed between 16-31 (use normal select 
for 0-15). On reception it will change the current multi setup.

	F0 42 3n 28		Wavestation sysex header
	01100011 (63)	Multi Mode Setup Select SR Expanded
	0xxxxxxx		Multi Mode Setup number (true number)
	11110111 (F7)	End of exclusive

2.2 Status messages

Status messages are transmitted after reception of data messages. They 
indicate the receive status of the data. When received they will display an 
appropriate message.

2.2.1 Data Load Error

This message is transmitted whenever a message is received and the checksum 
failed.

	F0 42 3n 28		Wavestation sysex header
	00100100 (24)	Data Load Error message type
	11110111 (F7) 	End of exclusive

2.2.2 Data Load Complete

This message is transmitted whenever a data message is received successfully.

	F0 42 3n 28		Wavestation sysex header
	00100011 (23)	Data Load Complete message type
	11110111 (F7)	End of exclusive

3.0 Transmit Only Messages

3.1 Status messages

Status messages are transmitted after reception of data messages. They 
indicate the receive status of the data.

3.1.1 Write Complete

	F0 42 3n 28		Wavestation sysex header
	00100001 (21)	Write Complete message type
	11110111 (F7)	End of exclusive
	
3.1.2 Write Error

	F0 42 3n 28		Wavestation sysex header
	00100010 (22)	Write Error message type
	11110111 (F7)	End of exclusive

3.2 Device ID Message

	11110000 (F0)	System Exclusive
	01111110 (7E)	Non Real Time message
	0000xxxx (0X)	Channel number
	00000110 (06)	Inquiry message
	00000010 (02)	ID reply
	01000010 (42)	KORG ID
	00101000 (28)	Wavestation family code (LSB)
	00000000 (00)	(MSB)
	00000010 (02)	Member code (LSB)
	00000000 (00)	(MSB)
	0xxxxxxx (xx)	Minor software version (LSB)
	0xxxxxxx (xx)	(MSB)
	0xxxxxxx (xx)	Major software version(LSB)
	0xxxxxxx (xx)	(MSB)
	11110111 (F7)	End of exclusive

4.0 Receive Only Messages

4.1 Request Messages

4.1.1 Single Patch Dump Request

	F0 42 3n 28		Wavestation sysex header
	00010000 (10)	Single Patch Dump Request
	0000xxxx (0x)	Bank number (0..11)
	0xxxxxxx 		Patch number
	11110111 (F7)	End of exclusive

4.1.2 Single Performance Dump Request

	F0 42 3n 28		Wavestation sysex header
	00011001 (19)	Single Performance Dump Request
	0000xxxx (0x)	Bank number (0..11)
	0xxxxxxx 		Performance number
	11110111 (F7)	End of exclusive
	
4.1.3 All Patch Dump Request

	F0 42 3n 28		Wavestation sysex header
	00011100 (1c)	All Patch Dump Request
	0000xxxx (0x)	Bank number (0..11)
	11110111 (F7)	End of exclusive
	
4.1.4 All Performance Dump Request

	F0 42 3n 28		Wavestation sysex header
	00011101 (1d)	All Performance Dump Request
	0000xxxx (0x)	Bank number (0..11)
	11110111 (F7)	End of exclusive
	
4.1.5 All Data Request

	F0 42 3n 28		Wavestation sysex header
	00001111 (0F)	All Data Dump Request
	11110111 (F7)	End of exclusive
	
4.1.6 System Setup Dump Request

	F0 42 3n 28		Wavestation sysex header
	00001110 (0E)	System Setup Dump Request
	11110111 (F7)	End of exclusive
	
4.1.7 Wave Sequence Data Dump Request

	F0 42 3n 28		Wavestation sysex header
	00001100 (0C)	Wave Sequence Dump Request
	0000xxxx (0x)	Bank number (0..11)
	11110111 (F7)	End of exclusive

4.1.8 Performance Map Dump Request

	F0 42 3n 28		Wavestation sysex header
	00000111 (07)	Performance Map Dump Request
	11110111 (F7)	End of exclusive
	
4.1.9 Multi Mode Setup Dump Request

	F0 42 3n 28		Wavestation sysex header
	00000110 (06)	Multi Mode Setup Dump Request
	11110111 (F7)	End of exclusive

4.1.10 Micro Tune Scales  Dump Request

	F0 42 3n 28		Wavestation sysex header
	00001000 (08)	Micro Tune Scales Dump Request
	11110111 (F7)	End of exclusive

4.2 Commands

4.2.1 Patch Write Command

	F0 42 3n 28		Wavestation sysex header
	00010001 (11)	Patch Write Command
	0000xxxx (0x)	Bank number (0..11)
	0ppppppp (pp)	Patch number (0-34)
	11110111 (F7)	End of exclusive

4.2.2 Performance Write Command

	F0 42 3n 28		Wavestation sysex header
	00011010 (1A)	Performance Write Command
	0000xxxx (0x)	Bank number (0..11)
	0ppppppp (pp)	Performance number (0-49)
	11110111 (F7)	End of exclusive

4.3 Device Inquiry Message

	11110000 (F0)	System Exclusive
	01111110 (7E)	Non Real Time
	0000xxxx (0x)	Channel number
	00000110 (06)	Inquiry message
	00000001 (01)	Inquiry request
	11110111 (F7)	End of exclusive
	
5.0 Data Structure Tables

	typedef	char 	byte;	/* 8 bits, signed */
	typedef	short	word;	/* 16 bits, signed */
	typedef	unsigned char	ubyte;	/* 8 bits, unsigned */
	typedef	unsigned short	uword;	/* 16 bits, unsigned */
	typedef	unsigned long	ulong;	/* 32 bits, unsigned */
	typedef	unsigned char 	boolean;	/* Boolean TRUE or FALSE */

5.1 Performance Data Structure

	typedef struct
	{
		char Perf_Name[NAME_SIZE]	;	/* Performance name - up to 16 
				characters */
		byte Fx_Perf_Block[21];		/* Leave space for effects 
				parameters */
		part Parts[8]; 				/* This is where the PART 
				blocks start, of which 8 can be 
				appended to the performance */
	} performance;

	typedef struct
	{
		byte	Bank_Num; 	/* Bank number this PART is playing */
		byte	Patch_Num;	/* Patch number this PART is playing */
		ubyte	Level;		/* Volume for this part */
		byte	0utput; 	/* OUTPUT CHAN FOR THIS Part */
		ubyte	Part_Mode;	/* KEYBOARD ASSIGN MODE 
								(Polyphonic,UNI) */

								/* bit 6-7 */
				/* Bank Expansion */        
				/* 00= Use normal bank num */
			                       if Bank_Num = 0 --> RAM1
                                				       if Bank_Num = 1 --> RAM2
                                				       if Bank_Num = 2 --> ROM11
                                				       if Bank_Num = 3 --> CARD */
				/* 01= Use expanded banks as below:
                                				       if Bank_Num = 0 --> ROM4
                                				       if Bank_Num = 1 --> ROM5
                                				       if Bank_Num = 2 --> RAM3
                                				       if Bank_Num = 3 --> ROM6 */
				/* 10= Use expanded banks as below:
				       if Bank_Num = 0 --> ROM7
                                				       if Bank_Num = 1 --> ROM8
                                				       if Bank_Num = 2 --> ROM9
                                				       if Bank_Num = 3 --> ROM10 */
				/* 11= **** reserved for future use */

				/* bit 5-4 */
								/* 00= **** reserved for future use */
								/* 01= Local play mode*/
								/* 10= MIDI play mode*/
								/* 11 = Both */

								/* bit 3-2 */
								/* 00= **** reserved for future use */
								/* 01= polyphonic*/
								/* 10= unison re-trigger*/
								/* 11= unison legato*/

				/* bit 1-0 */
								/* 00= low note*/
								/* 01= high note*/
								/* 10= last note*/
								/* 11 = **** reserved for future use */

		ubyte	Lo_Key;			/* Lower note of keyboard range*/
		ubyte	Hi_Key;			/* Upper note of keyboard range*/
		ubyte	Lo_Vel;			/* Lower limit of velocity range*/
		ubyte	Hi_Vel;			/* Upper limit of velocity range */
		byte	Trans;			/* Transpose value in semitones */
		byte	Detune;			/* Detune value in cents*/
		ubyte	Tunetab; 		/* Micro tuning table for this PART */
		ubyte	Micro_Tune_Key;	/* Root key for pure major/minor and 
				USER scales */
		ubyte	Midi_Out_Chan;	/* MIDI transmit channel for this 
				PART */
		byte	Midi_Prog_Num;	/* MIDI prog# to xmit when PART 
				selected, -1 =off) */
		byte	Sus_Enable;		/* Sustain Pedal enable/disable */
		uword	Delay;			/* Delay value in milliseconds */
	} part;
	
5.2 Patch Data Structure

	/*        Individual Patch Data Structure */
	/* This is the structure for data that is individual to the */
	/* 1, 2, or 4 oscillators that make up a Patch.*/
	/* Four of these structures are included in a Patch.*/

	typedef struct
	{
		byte	Wave_Coarse;	/* Wave detuning in semitones*/
		byte	Wave_Fine;		/* Wave detuning in cents */
		ubyte	Wave_Bank;		/* Wave bank */
		uword	Wave_Num;		/* Wave number*/
		byte	Wave_Scale;		/* Wave pitch scaling slope */
		ubyte	Lfo1_Rate;		/* LFO 1 Rate */
		ubyte	Lfo1_Amt;		/* LFO 1 Amount*/
		ubyte	Lfo1_Delay;		/* LFO 1 Delay*/
		ubyte	Lfo1_Fade;		/* LFO 1 Fade in*/
		ubyte	Lfo1_Shape;		/* LFO 1 Shape (bits 0-6)1-127*/
								/* LFO 1 Sync (bit 7) */
								/*1 = Sync on */
								/*0 = Sync off*/
		byte	S1_Lfo1_R;		/* Mod Source to LFO 1 Rate pointer*/
		byte	S1_Lfo1_R_Amt; 	/* Mod Source to LFO 1 Rate amount*/
		byte	S1_Lfo1_A;		/* Mod Source to LFO 1 Amt pointer*/
		byte	S1_Lfo1_A_Amt;	/* Mod Source to LFO 1 Amt amount*/
		ubyte	Lfo2_Rate;		/* LFO 2 Rate*/
		ubyte	Lfo2_Amt;		/* LFO 2 Amount*/
		ubyte	Lfo2_Delay;		/* LFO 2-Delay*/
		ubyte	Lfo2_Fade;		/* LFO 2-Fade in*/
		ubyte	Lfo2_Shape;		/* LFO 2-Shape (bits 0-6)1-127*/
								/* LFO 2 Sync (bit 7) */
										/* 1 = Sync on */
										/* 0 = Sync off*/
		byte	S1_Lfo2_R;		/* Mod Source to LFO 1 Rate pointer*/
		byte	S1_Lfo2_R Amt;	/* Mod Source to LFO 2 Rate amount*/
		byte	S1_Lfo2_A;		/* Mod Source to LF0 2 Amt pointer*/
		byte	S1_Lfo2_A Amt;	/* Mod Source to LFO 1 Amt amount*/
		ubyte	EG_Rate1;		/* Envelope 1 Rate 1 */
		ubyte	EG_Rate2;		/* Envelope 1 Rate 2 */
		ubyte	EG_Rate3;		/* Envelope 1 Rate 3 */
		ubyte	EG_Rate4;		/* Envelope 1 Rate 4 */
		ubyte	EG_Level0;		/* Envelope 1 Level 0 */
		ubyte	EG_Level1;		/* Envelope 1 Level 1 */
		ubyte	EG_Level2;		/* Envelope 1 Level 2 */
		ubyte	EG_Level3;		/* Envelope 1 Level 3 */
		ubyte	EG_Level4;		/* Envelope 1 Level 4 */
		byte	Vel_EG_A;		/* Velocity to Env1 Amount Amt */
		ubyte	AEG_Rate1;		/* Amplitude Envelope Rate 1 */
		ubyte	AEG_Rate2;		/* Amplitude Envelope Rate 2 */
		ubyte	AEG_Rate3;		/* Amplitude Envelope Rate 3 */
		ubyte	AEG_Rate4;		/* Amplitude Envelope Rate 4 */
		ubyte	AEG_Level0;		/* Amplitude Envelope Level 0 */
		ubyte	AEG_Level1;		/* Amplitude Envelope Level 1 */
		ubyte	AEG_Level2;		/* Amplitude Envelope Level 2 */
		ubyte	AEG_Level3;		/* Amplitude Envelope Level 3 */
		byte	Pitch_Mac;		/* Pitch Macro number*/
		byte	Fil_Mac;		/* Filter Macro number*/
		byte	Amp_Mac;		/* Amplitude Envelope Macro number*/
		byte	Pan_Mac;		/* Pan Macro number*/
		byte	Env_Mac;		/* Envelope 1 macro number*/
		byte	Pw_Range;		/* Pitchwheel Range */
		byte	S1_Pitch;		/* Modulation Source 1 to Pitch 
				pointer*/
		byte	S1_Pitch_Amt;		/* Modulation Source 1 to Pitch 
				Amount*/
		byte	S2_Pitch;		/* Modulation Source 2 to Pitch 
				pointer*/
		byte	S2_Pitch_Amt;	/* Modulation Source 2 to Pitch 
				Amount*/
		byte	Key_Filter;	/* Keyboard to Filter Cutoff Amount*/
		byte	S1_Filter;	/* Modulation Source 1 to Filter 
				pointer*/
		byte	S1_Filter_Amt;	/* Modulation Source 1 to Filter 
				Amount*/
		byte	S2_Filter;		/* Modulation Source 2 to Filter 
				pointer*/
		byte	S2_Filter_Amt;	/* Modulation Source 2 to Filter 
				Amount*/
		byte	Vel_AEG_A;		/* Velocity to Amp Env Amount Amount*/
		byte	Vel_AEG_R;		/* Velocity To Amp Env Attack Rate 	Amt*/
		byte	Key AEG_R;		/* Keyboard to Amp Env Decay Rate Amt*/
		byte	S1_Amp;			/* Modulation Source 1 to Amp pointer*/
		byte	S1_Amp_Amt;		/* Modulation Source 1 to Amp Amount*/
		byte	S2_Amp;			/* Modulation Source 2 to Amp pointer*/
		byte	S2_Amp_Amt;		/* Modulation Source 2 to Amp Amount*/
		byte	Key_Pan_Amt;	/* Keyboard to Pan Amount*/
		byte	Vel_Pan_Amt;	/* Velocity to Pan Amount*/
		ubyte	Cutoff;			/* Filter Cutoff value */
		ubyte	Filter_Exciter;	/* Filter Exciter value */
		byte	Vel_EG_R;		/* Velocity to ENV1 rate amount*/
		byte	Key_EG_R;		/* Keyboard to ENV1 rate amount*/
		byte	PEG_Amt;		/* Pitch Ramp amount*/
		ubyte	PEG_Rate;		/* Pitch Ramp rate*/
		byte	Vel_PEG_A;		/* Velocity to pitch ramp amount */
		byte	Indiv_Level;	/* Velocity to pitch ramp rate amount*/
		long	Lfo1_Inc;		/* Lfo fade in amount increment*/
		long	Lfo2_Inc;		/* Lfo fade in amount increment*/
		byte	Patch_Output;	/* Individual output routing */
		byte	Wave_Num_Exp;		/* Wave number expansion to access 								
				Expansion PCM data (Waves numbered 
				397 and over). This number is added 
				to the value of Wave_Num to determine
				the actual wave number.*/
	} indiv;

	/*	Patch data structure	*/

	typedef struct
	{
		char	Patch Name[16];	/* Patch name up to 16 characters*/
		ubyte	Mix_Rate1;		/* Mix envelope rate for segment 1 */ 
		ubyte	Mix_Rate2; 		/* Mix envelope rate for segment 2 */ 
		ubyte	Mix_Rate3; 		/* Mix envelope rate for segment 3 */ 
		ubyte	Mix_Rate4; 		/* Mix envelope rate for segment 4 */ 
		uword	Mix_Count1; 	/* Number of update cycles for env seg*/ 
		uword	Mix_Count2; 	/* Number of update cycles for env seg*/ 
		uword	Mix_Count3; 	/* Number of update cycles for env seg*/ 
		uword	Mix_Count3B;	/* Number of update cycles for env seg*/ 
		uword	Mix_Count2B;	/* Number of update cycles for env seg*/ 
		uword	Mix_Count1B;	/* Number of update cycles for env seg*/ 
		uword	Mix_Count4; 	/* Number of update cycles for env seg*/
		long	Mix_XSlope1;	/* Increment size for env seg 1 */ 
		long	Mix_XSlope2;	/* Increment size for env seg 2 */ 
		long	Mix_XSlope3;	/* Increment size for env seg 3 */
		long	Mix_XSlope4;	/* Increment size for env seg 4 */
		long	Mix_YSlope1;	/* Increment size for env seg 1 */
		long	Mix_YSlope2;	/* Increment size for env seg 2 */]
		long	Mix_YSlope3;	/* Increment size for env seg 3 ~/ 
		long	Mix_YSlope4;	/* Increment size for env seg 4 */
		ubyte	Mix_X0;		/* Mix Envelope Point 0 level */
		ubyte	Mix_X1;			/* Mix Envelope Point 1 level */
		ubyte	Mix_X2;			/* Mix Envelope Point 2 level */
		ubyte	Mix_X3;			/* Mix Envelope Point 3 level */
		ubyte	Mix_X4;			/* Mix Envelope Point 4 level */
		ubyte	Mix_Y0;			/* Mix Envelope Point 0 level */
		ubyte 	Mix_Y1;			/* Mix Envelope Point 1 level */
		ubyte	Mix_Y2;			/* Mix Envelope Point 2 level */
		ubyte	Mix_Y3;			/* Mix Envelope Point 3 level */
		ubyte	Mix_Y4;			/* Mix Envelope Point 4 level */
		ubyte	Mix_Repeats;	/* Number of repeats of mix envelope*/
		ubyte	Mix_Env_Loop;	/* Start segment of Mix Envelope loops*/
		ubyte	S1_MixAC;		/* Modulation Source 1 to MixAC
				pointer*/
		byte	S1_MixAC_Amt;	/* Modulation Source 1 to MixAC Amount*/
		ubyte	S2_MixAC; 		/* Modulation Source 2 to MixAC
				pointer*/
		byte	S2_MixAC_Amt;	/* Modulation Source 2 to MixAC Amount*/
		ubyte	S1_MixBD; 		/* Modulation Source 1 to MixBD
 				pointer*/
		byte	S1_MixBD_Amt;	/* Modulation Source 1 to MixBD Amount*/
		ubyte	S2_MixBD; 		/* Modulation Source 2 to MixBD 
				pointer*/
		byte	S2_MixBD_Amt;	/* Modulation Source 2 to MixBD Amount*/
		byte	Number_Of_Waves;	/* Number of WAVES/WAVESEQS in Patch*/
		ubyte	Hard_Sync; 		/* Hard Sync Flag*/
		byte	Bank_Exp; 	/* Bit 7 = 1; Second Exp Bit set for Wave D 
                                    if Wave_Bank = 0 --> Wave D uses ROM7 wseq
                                    if Wave_Bank = 1 --> Wave D uses ROM8 wseq
                                    if Wave_Bank = 2 --> Wave D uses ROM9 wseq
                                    if Wave_Bank = 3 --> Wave D uses ROM10 wseq*/
                        				/* Bit 6 = 1;  Second Exp Bit set for Wave C 
                                    if Wave_Bank = 0 --> Wave C uses ROM7 wseq
                                    if Wave_Bank = 1 --> Wave C uses ROM8 wseq
                                    if Wave_Bank = 2 --> Wave C uses ROM9 wseq
                                    if Wave_Bank = 3 --> Wave C uses ROM10 wseq*/
                        				/* Bit 5 = 1;  Second Exp Bit set for Wave B 
                                    if Wave_Bank = 0 --> Wave B uses ROM7 wseq
                                    if Wave_Bank = 1 --> Wave B uses ROM8 wseq
                                    if Wave_Bank = 2 --> Wave B uses ROM9 wseq
                                    if Wave_Bank = 3 --> Wave B uses ROM10 wseq*/
                        				/* Bit 4 = 1;  Second Exp Bit set for Wave A 
                                    if Wave_Bank = 0 --> Wave A uses ROM7 wseq
                                    if Wave_Bank = 1 --> Wave A uses ROM8 wseq
                                    if Wave_Bank = 2 --> Wave A uses ROM9 wseq
                                    if Wave_Bank = 3 --> Wave A uses ROM10 wseq*/
                        				/* Bit 3 = 1;  First Exp Bit set for Wave D 
                                    if Wave_Bank = 0 --> Wave D uses ROM4 wseq
                                    if Wave_Bank = 1 --> Wave D uses ROM5 wseq
                                    if Wave_Bank = 2 --> Wave D uses RAM3 wseq
                                    if Wave_Bank = 3 --> Wave D uses ROM6 wseq */
                        				/* Bit 2 = 1;  First Exp Bit set for Wave C 
                                    if Wave_Bank = 0 --> Wave C uses ROM4 wseq
                                    if Wave_Bank = 1 --> Wave C uses ROM5 wseq
                                    if Wave_Bank = 2 --> Wave C uses RAM3 wseq
                                    if Wave_Bank = 3 --> Wave C uses ROM6 wseq*/
                        				/* Bit 1 = 1;  First Exp Bit set for Wave B 
                                    if Wave_Bank = 0 --> Wave B uses ROM4 wseq
                                    if Wave_Bank = 1 --> Wave B uses ROM5 wseq
                                    if Wave_Bank = 2 --> Wave B uses RAM3 wseq
                                    if Wave_Bank = 3 --> Wave B uses ROM6 wseq */
                        				/* Bit 0 = 1;  First Exp Bit set for Wave A 
                                    if Wave_Bank = 0 --> Wave A uses ROM4 wseq
                                    if Wave_Bank = 1 --> Wave A uses ROM5 wseq
                                    if Wave_Bank = 2 --> Wave A uses RAM3 wseq
                                    if Wave_Bank = 3 --> Wave A uses ROM6 wseq */

		byte	Dummy141; 		/* Extra for future use */
		indiv 	waveA;			/* Individual parameters for WAVE A */
		indiv 	waveB;			/* Individual parameters for WAVE B */
		indiv 	waveC;			/* Individual parameters for WAVE C */
		indiv 	waveD;			/* Individual parameters for WAVE D */
	} patch;

5.3 Multi Mode Setup Data Structure

This data includes the first 16 of the 32 multisets in a stripped-down version 
compatible with the Wavestation keyboard. Multiset names and channel panning 
are not included, and references to RAM3 and ROM 4-10 are changed to ROM11. 
	
	/*		Data structures of the multi-set map which	*/
	/*		specifies the initial program on each track.	*/
	/*		There are 16 setups. Each one holds bank/prog */
	/*		numbers for each MIDI channel. */

	typedef struct
	{
		ubyte	Multimap_Chan_Enable;	/* MIDI channel enable/disable */ 
		ubyte	Multimap_Bank; 																	/* Bank number of this program */
		ubyte	Multimap_Prog; 			/* Program number of this program */
		ubyte	Multimap_Level;			/* Performance level */
 	} multimap;

	typedef struct
	{
		ubyte	Multiset_FX_Chan;			/* Effects control channel number*/
		ubyte	Fx_Multi_Block[21];	/* Space for effects parameters*/
		multimap 	Multiset_Map[16];		/* Bank and program numbers */
	} multiset;
	
	typedef struct
	{
		multiset		multisets[16];
		byte		spare_multiset_byte;		
	} multiset_block;
		
5.4 Multi Mode Setup Expanded Data Structure

This data includes the first 16 of the 32 multisets in a stripped-down
version compatible with the Wavestation A/D. References to ROM4-10 are
changed to ROM11, as in the normal Multi Mode Setup structure above, but
references to RAM3 are allowed.

5.5 Multi Mode Setup SR Expanded Data Structure

This data includes all 32 Multisets, along with names and channel
panning. References to RAM3 and ROM 4-10 are allowed. Please note that
the multiset_block contains an extra byte at the end, as described in
Section 5.3 above.

	typedef struct
	{
		multiset_block;                 /* Original Multisets */
		multiset_block;                 /* Expanded Multisets */
		ubyte	Multi_Names[16][32];      /* 15 Char Multiset Names + NULL*/
		ubyte	Multi_Output[16][32];     /* 16 Channels of Multiset Pan */
	} multiset_sr_extended_block

5.6 Wave Sequence Data Structure

	/* This is repeated for the number of wave sequences in the bank. */

	typedef struct
	{
		uword	WS_Link; 		/* Pointer to Wave Sequence Start Step */
		uword	WS_Slink;		/* Pointer to Startmod Start Step */
		ubyte	WS_Loop_Start; 	/* Step number of WAVESEQ Loop Start Point step*/
		ubyte	WS_Loop_End;	/* Step number of WAVESEQ Loop End Point step*/
		ubyte	WS_Loop_Count;  /* - Loop repeat count (bits 0-6) 1-127*/
									/* O=OFF     */
									/~ 127=1NF */
								/*Loop Direction (bit 7)*/
									/* O = FOR */
									/* 1 = B/F      */
		ubyte	WS_Start_Step,	/* Startmod starting step number*/
		ubyte	WS_Mod_Src;		/* Controller number to use for startmod */
		byte 	WS_Mod_Amt;		/* Startmod sensitivity */
		word 	WS_Dyno_Mod;	/* (Total_Time * Mod_Amt)/255 */
		uword	WS_Start_Time;	/* Cumulative time up to start step */
		uword	WS_Time;		/* Total time of Wave Sequence */
	} waveseq;

	/* Data structure of each STEP in a WAVE SEQUENCE  */

	typedef struct
	{
		uword	WS_Flink;		/* Step number of step in WAVSEQ after this one */
		uword	WS_Blink;		/* Step number of step in WAVSEQ before this one */
		uword	WS_Llink;		/* Pointer to loop start (0xFFFF except last step) */
		uword	WS_Wave_Num;	/* Wave number of this step in wave sequence */
		byte	WS_Coarse		/* -24 to 24: Coarse tuning of wave */
				/* 25 to 47: illegal values */
				/* 48 to 96: subtract 72 for actual coarse */
				/* tuning and use expanded PCM, adding 365 */
				/* to WS_Wave_Num value for actual PCM wave */
				/* number. */
		byte	WS_Fine;		/* Fine tuning of wave */
		uword	WS_Xfade;		/* Crossfade time of wave */
		uword	WS_Duration;	/* Duration of wave */
		ubyte	WS_Level;		/* Level of wave */
		ubyte	WS_Mod_Index;	/* Modulation Index */
	} wavestep;

	typedef struct
	{
		char	Wave_Seq_Name[8];
	} ws_name;

	/* This is the entire structure which is transmitted */

	typedef struct
	{
		waveseq	waveseq_block[32];	/* 32 wavseq locations */
		wavstep	wavstep_block[501];	/* 501 wave seq steps */
		ws_name	ws_name_block[32];	/* 32 wave seq names */
	} ws_block;
	
5.7 Micro Tune Scale Data Structures
	
	typedef struct
	{
		byte	c key;	/* Offset from equal tempered for C note */
		byte	cs key;	/* Offset from equal tempered for C# note */
		byte	d key;	/* Offset from equal tempered for D note */
		byte	ds key;	/* Offset from equal tempered for D# note */
		byte	e key;	/* Offset from equal tempered for E note */
		byte	f key;	/* Offset from equal tempered for F note */
		byte	fs key;	/* Offset from equal tempered for F# note */
		byte	g key;	/* Offset from equal tempered for G note */
		byte	gs key;	/* Offset from equal tempered for G# note */
		byte	a key;	/* Offset from equal tempered for A note */
		byte	as key;	/* Offset from equal tempered for A# note */
 		byte	b key;	/* Offset from equal tempered for B note */
	} mtune;
	
	typedef struct
	{
		mtune	mtunes[12];
		byte	spare_mtune_byte;		
	} mtune_block;
	
5.8 System Setup Data Structure

	typedef struct
	{
		ubyte	current_multi;			/* CURRENT MULTISET */
		ubyte	current_tune;			/* CURRENT _MTUNE* /
		byte	master_tune;			/* MASTER TUNE */
		byte	effects_enable;			/* EFFECTS ENABLE */
		ubyte	pitch_bend_range;		/* PITCH BEND RANGE */
		ubyte	velocity_response;		/* VELOCITY RESPONSE*/
		byte	midi_mode; 				/* MIDI MODE */
		ubyte	midi_base; 				/* MIDI BASE CHAN */
		ubyte	num_mono_chans; 		/* NUM MONO CHANS */
		byte	key_num_offset; 		/* KEY NUM OFFSET */
		byte	param_enable; 			/* MIDI PARAM ENABLE */
		byte	midi_1; 				/* CONTROLLER 1 */
		byte	midi_2; 				/* CONTROLLER 2*/
		byte	xmit_mode; 				/* XMIT MODE */
		byte	local_kbd; 				/* LOCAL_KBD */
		byte	xmit_program_enable;	/* XMlT PROG CHANGE */
		byte	xmit_pressure_enable;	/* XMIT AFTERTOUCH */
		byte	xmit_pitch_enable;		/* XMlT PITCH BEND */
		byte	xmit_control_enable;	/* XMIT CONTROLLERS*/
		byte	rec_program_enable;		/* REC PROG CHANGE */
		byte	rec_pressure_enable;	/* REC AFTERTOUCH */
		byte	rec_pitch_enable		/* REC PITCH BEND */
		byte	rec_control_enable;		/* REC CONTROLLERS*/
		byte	note_enable; 			/* REC NOTE ON OFF*/
		byte	alloff_enable; 			/* REC ALL NOTES OFF*/
		byte	progmap_enable; 		/* PROGMAP ENABLE */
		ubyte	foot_damper_function;
		ubyte	foot_damper_polarity;
		ubyte	foot_assign_1_function;
		ubyte	foot_assign_1_polarity;
		ubyte	foot_assign_2_function;
		ubyte	foot_assign_2_polarity;
		ubyte	ws_midi_clock;
		byte	spare_system_byte;			
	} system;

5.9 System Setup Expanded Data Structure

This contains data not supported by the original Wavestation keyboard, 
including various MIDI remapping features, local transpose, and analog 
inputs parameters for the Wavestation A/D.

	typedef struct			
	{
		ubyte		prog_to_multi_fx;
		ubyte		change_multi_with;
		ubyte		remap_to_joy_x;			
		ubyte		remap_to_joy_y;			
		ubyte		remap_to_fx_switch;
		ubyte		local_xpose;
		ubyte		analog_setup_number;
		byte		analog_bus_macro;
		ubyte		analog_lev_1;			
		ubyte		analog_lev_2;			
		byte		analog_chan_1;			
		byte		analog_chan_2;
		ubyte		analog_1_bus;			
		ubyte		analog_2_bus;
		ubyte		analog_1_filter;
		ubyte		analog_2_filter;
		ubyte		analog_1_exciter;
		ubyte		analog_2_exciter;
		ubyte		analog_input_disable;
	}system_ext;			

5.10 System Setup Expanded SR Data Structure

This contains data specific to the Wavestation SR.

      typedef struct
      {
        ubyte        sysex_xmit_type;   /* Type of System Exclusive Transfer */
        ubyte        perf_midi_mode;    /* MIDI Mode when in Performance mode */
        ubyte        multi_midi_mode;   /* MIDI Mode when in Multi mode */
        ubyte        current_demo;      /* The Demo sequence number */
        ubyte        perf_mode;         /* 1=Perfomance Mode 0=Multi Mode */
        ubyte        num_multi_chans;   /* Like num_mono_chans for Multi Mode */
        ubyte        reset_act_sens_control; /* 1=NOTES OFF 0=Notes + Contlrs */
        ubyte        rec_bank_enable; /* 0=OFF, 1=ON */
      }system_ext_sr;

5.11 Performance Map Structures

In this data, references to RAM3 and ROM 4-10 are changed to ROM11 for 
compatability with the keyboard.

	typedef struct
	{
		ubyte	Perfmap_Bank;	/* Bank number of this performance */
		ubyte	Perfmap_Prog;	/* MIDI Program Change number of this
 				performance */
	} perfmap;
	
	typedef struct
	{
		perfmap	perfmaps[128];
		byte	spare_perfmap_byte;			
	} perfmap_block;
	
5.12 Performance Map Expanded Structures

In this data, references to RAM3 are allowed, but ROM 4-10 are changed to 
ROM11 for compatability with the Wavestation A/D. It is otherwise the same 
as the normal Performance Map structure above.

5.13 Performance Map SR Expanded Structures

In this data, references to RAM3 and ROM 4-10 are allowed. It is otherwise the 
same as the normal Performance Map structure above.

5.14 All Data Structure

	typedef struct
	{
		system			system_all;
		multiset_block	multiset_all;
		mtune_block		mtune_all;
		perfmap_block	perfmap_all;
		performance		perf_ram1[50];
		performance		perf_ram2[50];
		patch			patch_ram1[35];
		patch			patch_ram2[35];
		ws_block		ws_ram1;
		ws_block		ws_ram2;
	} all_data;

5.15 Parameter Number Table

enum /* Parameter numbers. */
{
/* 0 */   CURRENT_BANK,
/* 1 */   CARD_NAME,
/* 2 */   CURRENT_PROG,
/* 3 */   PROG_NAME,
/* 4 */   MIDI_MODE,
/* 5 */   MIDI_BASE_CHAN,
/* 6 */   NUM_MONO_CHANS,
/* 7 */   KEY_NUM_OFFSET,
/* 8 */   MIDI_PARAM_ENABLE,
/* 9 */   CONTROLLER_1,
/* 10 */   CONTROLLER_2,
/* 11 */   XMIT_MODE,
/* 12 */   LOCAL_KBD,
/* 13 */   XMIT_PROG_CHANGE,
/* 14 */   XMIT_AFTERTOUCH,
/* 15 */   XMIT_PITCH_BEND,
/* 16 */   XMIT_CONTROLLERS,
/* 17 */   REC_PROG_CHANGE,
/* 18 */   REC_AFTERTOUCH,
/* 19 */   REC_PITCH_BEND,
/* 20 */   REC_CONTROLLERS,
/* 21 */   REC_NOTE_ON_OFF,
/* 22 */   REC_ALL_NOTES_OFF,
/* 23 */   PROGMAP_ENABLE,
/* 24 */   PROGMAP_CHANGE_NUM,
/* 25 */   PROGMAP_PROG_BANK,
/* 26 */   PROGMAP_PROG_NUM,
/* 27 */   PROGMAP_PROG_NAME,
/* 28 */   CURRENT_MULTISET,
/* 29 */   MULTISET_FX_CONTROL_		CHAN,
/* 30 */   MULTISET_CHAN,
/* 31 */   MULTISET_CHAN_ENABLE,
/* 32 */   MULTISET_LEVEL,
/* 33 */   MULTISET_PROG_BANK,
/* 34 */   MULTISET_PROG_NUM,
/* 35 */   MULTISET_PROG_NAME,
/* 36 */   SYSEX_PATCH_BANK,
/* 37 */   SYSEX_PATCH_NUM,
/* 38 */   SYSEX_ALL_BANK,
/* 39 */   SYSEX_WAVESEQ_BANK,
/* 40 */   SYSEX_PROG_BANK,
/* 41 */   SYSEX_PROG_NUM,
/* 42 */   MASTER_TUNE,
/* 43 */   EFFECTS_ENABLE,
/* 44 */   MEM_PROTECT_INTERNAL,
/* 45 */   MEM_PROTECT_CARD,
/* 46 */   PITCH_BEND_RANGE,
/* 47 */   VELOCITY_RESPONSE,
/* 48 */   SAVE_DATA_TYPE,
/* 49 */   SAVE_SOURCE_BANK,
/* 50 */   SAVE_SOURCE_NUM,
/* 51 */   SAVE_SOURCE_NAME,
/* 52 */   SAVE_DEST_BANK,
/* 53 */   SAVE_DEST_NUM,
/* 54 */   SAVE_DEST_NAME,
/* 55 */   SAVE_PLAY,
/* 56 */   CURRENT_PART,
/* 57 */   PART_PATCH_BANK,
/* 58 */   PART_PATCH_NUM,
/* 59 */   PART_PATCH_NAME,
/* 60 */   PART_MODE,
/* 61 */   PART_VOLUME,
/* 62 */   PART_OUTPUT,
/* 63 */   PART_KEY_LIMIT_LOW,
/* 64 */   PART_KEY_LIMIT_HIGH,
/* 65 */   PART_VEL_LIMIT_LOW,
/* 66 */   PART_VEL_LIMIT_HIGH,
/* 67 */   PART_TRANSPOSE,
/* 68 */   PART_DETUNE,
/* 69 */   PART_SUS_ENABLE,
/* 70 */   PART_DELAY,
/* 71 */   PART_UNI_NOTE_PRIORITY,
/* 72 */   PART_MTUNE_TAB,
/* 73 */   PART_MTUNE_KEY,
/* 74 */   PART_MIDI_XMIT_CHAN,
/* 75 */   PART_PLAY_MODE,
/* 76 */   PART_PROG_CHANGE_XMIT,
/* 77 */   PATCH_STRUCTURE,
/* 78 */   PATCH_HARD_SYNC,
/* 79 */   CURRENT_WAVE,
/* 80 */   PATCH_PITCH_MACRO,
/* 81 */   PATCH_FILTER_MACRO,
/* 82 */   PATCH_AMP_MACRO,
/* 83 */   PATCH_PAN_MACRO,
/* 84 */   PATCH_ENV_MACRO,
/* 85 */   PATCH_PITCH_BEND_RANGE,
/* 86 */   PATCH_PITCH_RAMP_AMT,
/* 87 */   PATCH_PITCH_RAMP_RATE,
/* 88 */   PATCH_PITCH_VEL_AMT,
/* 89 */   PITCH_SOURCE_1,
/* 90 */   PITCH_SOURCE_1_AMOUNT,
/* 91 */   PITCH_SOURCE_2,
/* 92 */   PITCH_SOURCE_2_AMOUNT,
/* 93 */   FILTER_MOD_CUTOFF,
/* 94 */   FILTER_MOD_TRACKING,
/* 95 */   FILTER_EXCITER_AMOUNT,
/* 96 */   FILTER_MOD_SOURCE1,
/* 97 */   FILTER_MOD_SOURCE1_AMT,
/* 98 */   FILTER_MOD_SOURCE2,
/* 99 */   FILTER_MOD_SOURCE2_AMT,
/* 100 */   GP_ENV_LEVEL_0,
/* 101 */   GP_ENV_LEVEL_1,
/* 102 */   GP_ENV_LEVEL_2,
/* 103 */   GP_ENV_LEVEL_3,
/* 104 */   GP_ENV_LEVEL_4,
/* 105 */   GP_ENV_RATE_1,
/* 106 */   GP_ENV_RATE_2,
/* 107 */   GP_ENV_RATE_3,
/* 108 */   GP_ENV_RATE_4,
/* 109 */   GP_VEL_ENV_AMT,
/* 110 */   AMP_ENV_LEVEL_0,
/* 111 */   AMP_ENV_LEVEL_1,
/* 112 */   AMP_ENV_LEVEL_2,
/* 113 */   AMP_ENV_LEVEL_3,
/* 114 */   AMP_ENV_RATE_1,
/* 115 */   AMP_ENV_RATE_2,
/* 116 */   AMP_ENV_RATE_3,
/* 117 */   AMP_ENV_RATE_4,
/* 118 */   AMP_MOD_VEL_ENV_AMOUNT,
/* 119 */   AMP_MOD_SOURCE_1,
/* 120 */   AMP_MOD_SOURCE_1_AMOUNT,
/* 121 */   AMP_MOD_SOURCE_2,
/* 122 */   AMP_MOD_SOURCE_2_AMOUNT,
/* 123 */   AMP_MOD_VEL_ATTACK_RATE,
/* 124 */   AMP_MOD_KBD_DECAY_RATE,
/* 125 */   LFO1_RATE,
/* 126 */   LFO1_INITIAL_AMOUNT,
/* 127 */   LFO1_SHAPE,
/* 128 */   LFO1_SYNC,
/* 129 */   LFO1_DELAY,
/* 130 */   LFO1_FADE_IN,
/* 131 */   LFO1_DEPTH_MOD_SOURCE,
/* 132 */   LFO1_DEPTH_MOD_SRC_AMT,
/* 133 */   LFO1_RATE_MOD_SOURCE,
/* 134 */   LFO1_RATE_MOD_SRC_AMT,
/* 135 */   LFO2_RATE,
/* 136 */   LFO2_INITIAL_AMOUNT,
/* 137 */   LFO2_SHAPE,
/* 138 */   LFO2_SYNC,
/* 139 */   LFO2_DELAY,
/* 140 */   LFO2_FADE_IN,
/* 141 */   LFO2_DEPTH_MOD_SOURCE,
/* 142 */   LFO2_DEPTH_MOD_SRC_AMT,
/* 143 */   LFO2_RATE_MOD_SOURCE,
/* 144 */   LFO2_RATE_MOD_SRC_AMT,
/* 145 */   PAN_VELOCITY_AMOUNT,
/* 146 */   PAN_KEYBOARD_AMOUNT,
/* 147 */   WAVEA_BANK,
/* 148 */   WAVEA_NUM,
/* 149 */   WAVEA_NAME,
/* 150 */   WAVEA_LEVEL,
/* 151 */   WAVEA_TUNE_COARSE,
/* 152 */   WAVEA_TUNE_FINE,
/* 153 */   WAVEA_TUNE_SLOPE,
/* 154 */   WAVEB_BANK,
/* 155 */   WAVEB_NUM,
/* 156 */   WAVEB_NAME,
/* 157 */   WAVEB_LEVEL,
/* 158 */   WAVEB_TUNE_COARSE,
/* 159 */   WAVEB_TUNE_FINE,
/* 160 */   WAVEB_TUNE_SLOPE,
/* 161 */   WAVEC_BANK,
/* 162 */   WAVEC_NUM,
/* 163 */   WAVEC_NAME,
/* 164 */   WAVEC_LEVEL,
/* 165 */   WAVEC_TUNE_COARSE,
/* 166 */   WAVEC_TUNE_FINE,
/* 167 */   WAVEC_TUNE_SLOPE,
/* 168 */   WAVED_BANK,
/* 169 */   WAVED_NUM,
/* 170 */   WAVED_NAME,
/* 171 */   WAVED_LEVEL,
/* 172 */   WAVED_TUNE_COARSE,
/* 173 */   WAVED_TUNE_FINE,
/* 174 */   WAVED_TUNE_SLOPE,
/* 175 */   WAVE_SEQ_NUM,
/* 176 */   WAVE_SEQ_BANK,
/* 177 */   WAVE_SEQ_NAME,
/* 178 */   WAVE_SEQ_STEP,
/* 179 */   WAVE_SEQ_WAVE_BANK,
/* 180 */   WAVE_SEQ_WAVE_NUM,
/* 181 */   WAVE_SEQ_WAVE_NAME,
/* 182 */   WAVE_SEQ_COARSE,
/* 183 */   WAVE_SEQ_FINE,
/* 184 */   WAVE_SEQ_LEVEL,
/* 185 */   WAVE_SEQ_DURATION,
/* 186 */   WAVE_SEQ_XFADE,
/* 187 */   WAVE_SEQ_LOOP_START,
/* 188 */   WAVE_SEQ_LOOP_END,
/* 189 */   WAVE_SEQ_REPEATS,
/* 190 */   WAVE_SEQ_START_STEP,
/* 191 */   WAVE_SEQ_MOD_SRC,
/* 192 */   WAVE_SEQ_MOD_AMT,
/* 193 */   MIX_ENV_POINT,
/* 194 */   MIX_ENV_RATE,
/* 195 */   MIX_ENV_X,
/* 196 */   MIX_ENV_Y,
/* 197 */   MIX_PERCENT_A,
/* 198 */   MIX_PERCENT_B,
/* 199 */   MIX_PERCENT_C,
/* 200 */   MIX_PERCENT_D,
/* 201 */   MIX_ENV_LOOP,
/* 202 */   MIX_ENV_REPEATS,
/* 203 */   MIX_MOD_X_SOURCE1,
/* 204 */   MIX_MOD_X_SRC1_AMT,
/* 205 */   MIX_MOD_X_SOURCE2,
/* 206 */   MIX_MOD_X_SRC2_AMT,
/* 207 */   MIX_MOD_Y_SOURCE1,
/* 208 */   MIX_MOD_Y_SRC1_AMT,
/* 209 */   MIX_MOD_Y_SOURCE2,
/* 210 */   MIX_MOD_Y_SRC2_AMT,
/* 211 */   COPY_MACRO_MODULE,
/* 212 */   COPY_MACRO_SOURCE_WAVE,
/* 213 */   COPY_MACRO_SOURCE_BANK,
/* 214 */   COPY_MACRO_SOURCE_NUM,
/* 215 */   COPY_MACRO_SOURCE_NAME,
/* 216 */   COPY_MACRO_DEST_MODULE,
/* 217 */   COPY_MACRO_DEST_WAVE,
/* 218 */   COPY_MACRO_DEST_BANK,
/* 219 */   COPY_MACRO_DEST_NUM,
/* 220 */   COPY_MACRO_DEST_NAME,
/* 221 */   COPY_DEST_PART,
/* 222 */   COPY_DEST_PART_PATCH_BLANK,
/* 223 */   COPY_DEST_PART_PATCH_NUM,
/* 224 */   COPY_DEST_PART_PATCH_NAME,
/* 225 */   COPY_WS_SOURCE_FROM_STEP,
/* 226 */   COPY_WS_SOURCE_FROM_BANK,
/* 227 */   COPY_WS_SOURCE_FROM_NUM,
/* 228 */   COPY_WS_SOURCE_FROM_NAME,
/* 229 */   COPY_WS_SOURCE_TO_STEP,
/* 230 */   COPY_WS_SOURCE_TO_BANK,
/* 231 */   COPY_WS_SOURCE_TO_NUM,
/* 232 */   COPY_WS_SOURCE_TO_NAME,
/* 233 */   COPY_WS_DEST_BANK,
/* 234 */   COPY_WS_DEST_NUM,
/* 235 */   COPY_WS_DEST_NAME,
/* 236 */   COPY_WS_DEST_AFTER_STEP,
/* 237 */   COPY_WS_DEST_AFTER_BANK,
/* 238 */   COPY_WS_DEST_AFTER_NUM,
/* 239 */   COPY_WS_DEST_AFTER_NAME,
/* 240 */   COPY_WS_DEST_BEFORE_STEP,
/* 241 */   COPY_WS_DEST_BEFORE_BANK,
/* 242 */   COPY_WS_DEST_BEFORE_NUM,
/* 243 */   COPY_WS_DEST_BEFORE_NAME,
/* 244 */   MTUNE_C,
/* 245 */   MTUNE_CS,
/* 246 */   MTUNE_D,
/* 247 */   MTUNE_DS,
/* 248 */   MTUNE_E,
/* 249 */   MTUNE_F,
/* 250 */   MTUNE_FS,
/* 251 */   MTUNE_G,
/* 252 */   MTUNE_GS,
/* 253 */   MTUNE_A,
/* 254 */   MTUNE_AS,
/* 255 */   MTUNE_B,
/* 256 */   CURRENT_MTUNE,
/* 257 */   FX_PLACEMENT,
/* 258 */   FX1_PROG,
/* 259 */   FX2_PROG,
/* 260 */   FX_MIX_3,
/* 261 */   FX_MIX_4,
/* 262 */   FX_MOD_3,
/* 263 */   FX_MOD_4,
/* 264 */   FX_MOD_AMT_3,
/* 265 */   FX_MOD_AMT_4,
/* 266 */   CURRENT_FX,
/* 267 */   FX_PROG,
/* 268 */   FX_FOOTSWITCH_ENABLE1,
/* 269 */   FX_FOOTSWITCH_ENABLE6,
/* 270 */   FX_LFO_SHAPE,
/* 271 */   FX_MOD1,
/* 272 */   FX_MOD2,
/* 273 */   FX_MOD3,
/* 274 */   FX_MOD4,
/* 275 */   FX_MOD5,
/* 276 */   FX_MOD6,
/* 277 */   FX_MOD7,
/* 278 */   FX_MOD8,
/* 279 */   FX_MOD10,
/* 280 */   FX_LFO_RATE1,
/* 281 */   FX_LFO_RATE3,
/* 282 */   FX_LFO_RATE4,
/* 283 */   FX_LFO_RATE5,
/* 284 */   FX_LFO_RATE6,
/* 285 */   FX_LFO_RATE7,
/* 286 */   FX_SPLIT_POINT2,
/* 287 */   FX_SPLIT_POINT3,
/* 288 */   FX_SPLIT_POINT10,
/* 289 */   FX_DELAY_FACTOR7,
/* 290 */   FX_TOP_DELAY3,
/* 291 */   FX_WG_JUCT_MIX10,
/* 292 */   FX_EQ_FREQ_LOW0,
/* 293 */   FX_EQ_FREQ_MID2,
/* 294 */   FX_EQ_FREQ_HIGH7,
/* 295 */   FX_EQ_WIDTH6,
/* 296 */   FX_100_WET_DRY0,
/* 297 */   FX_100_WET_DRY3,
/* 298 */   FX_100_WET_DRY4,
/* 299 */   FX_10_WET_DRY0,
/* 300 */   FX_10_WET_DRY3,
/* 301 */   FX_10_WET_DRY4,
/* 302 */   FX_UPARAM0,
/* 303 */   FX_UPARAM1,
/* 304 */   FX_UPARAM2,
/* 305 */   FX_UPARAM3,
/* 306 */   FX_UPARAM4,
/* 307 */   FX_UPARAM5,
/* 308 */   FX_UPARAM6,
/* 309 */   FX_UPARAM7,
/* 310 */   FX_UPARAM8,
/* 311 */   FX_UPARAM9,
/* 312 */   FX_UPARAM10,
/* 313 */   FX_UPARAM11,
/* 314 */   FX_UPARAM12,
/* 315 */   FX_UPARAM13,
/* 316 */   FX_PARAM0,
/* 317 */   FX_PARAM1,
/* 318 */   FX_PARAM2,
/* 319 */   FX_PARAM3,
/* 320 */   FX_PARAM4,
/* 321 */   FX_PARAM5,
/* 322 */   FX_PARAM6,
/* 323 */   FX_PARAM7,
/* 324 */   FX_PARAM8,
/* 325 */   FX_PARAM9,
/* 326 */   FX_PARAM10,
/* 327 */   FX_PARAM11,
/* 328 */   FX_PARAM12,
/* 329 */   FX_PARAM13,
/* 330 */   FX_DEST_TYPE,
/* 331 */   FX_DEST_PROG,
/* 332 */   FX_DEST_FX_NUM,
/* 333 */   FX_DEST_PLACEMENT,
/* 334 */   FX_DEST_FX1,
/* 335 */   FX_DEST_FX2,
/* 336 */   WAVE_MUTE,
/* 337 */   WAVESEQ_WAVE,
/* 338 */   WAVE_SEQ_LOOP_DIR,
/* 339 */   WAVESEQ_COMPAND_SCALE,
/* 340 */   FOOT_DAMPER_FUNCTION,
/* 341 */   FOOT_DAMPER_POLARITY,
/* 342 */   FOOT_ASSIGN_1_FUNCTION,
/* 343 */   FOOT_ASSIGN_1_POLARITY,
/* 344 */   FOOT_ASSIGN_2_FUNCTION,
/* 345 */   FOOT_ASSIGN_2_POLARITY,
/* 346 */   BANK_COPY_TYPE,
/* 347 */   ENV1_MOD_VEL_RATE,
/* 348 */   ENV1_MOD_KBD_RATE,
/* 349 */   WS_MIDI_CLOCK,
/* 350 */   VIEW_BANK,
/* 351 */   VIEW_PERF_NUM,
/* 352 */   VIEW_PERF_NAME,
/* 353 */   COPY_FX_SOURCE_BANK,
/* 354 */   COPY_FX_SOURCE_NUM,
/* 355 */   COPY_FX_SOURCE_NAME,
/* 356 */   FX_11_WET_DRY0,
/* 357 */   FX_11_WET_DRY3,
/* 358 */   FX_11_WET_DRY4,
/* 359 */   FX_RAMP5,
/* 360 */   SOURCE_CARD_NAME,
/* 361 */   DEST_CARD_NAME,
/* 362 */   WAVEA_BUS_A,
/* 363 */   WAVEA_BUS_B,
/* 364 */   WAVEA_BUS_C,
/* 365 */   WAVEA_BUS_D,
/* 366 */   WAVEB_BUS_A,
/* 367 */   WAVEB_BUS_B,
/* 368 */   WAVEB_BUS_C,
/* 369 */   WAVEB_BUS_D,
/* 370 */   WAVEC_BUS_A,
/* 371 */   WAVEC_BUS_B,
/* 372 */   WAVEC_BUS_C,
/* 373 */   WAVEC_BUS_D,
/* 374 */   WAVED_BUS_A,
/* 375 */   WAVED_BUS_B,
/* 376 */   WAVED_BUS_C,
/* 377 */   WAVED_BUS_D,
/* 378 */   COPY_PART_SOURCE_BANK,
/* 379 */   GLOBAL_UTIL_DEST_BANK,

Parameter numbers 380 - 406 are sent as Parameter Change Messages Expanded. 
Parameters 380-404 are ignored by the Wavestation EX keyboard.

/* 380 */   	REMAP_TO_JOY_X,
/* 381 */   	REMAP_TO_JOY_Y,
/* 382 */   	REMAP_TO_FX_SWITCH,
/* 383 */   	PROG_TO_MULTI_FX,
/* 384 */   	CHANGE_MULTI_WITH,
/* 385 */   	ANALOG_LEV_1,
/* 386 */   	ANALOG_LEV_2,
/* 387 */   	ANALOG_CHAN_1,
/* 388 */   	ANALOG_CHAN_2,
/* 389 */   	ANALOG_1_BUS_A,
/* 390 */   	ANALOG_1_BUS_B,
/* 391 */   	ANALOG_1_BUS_C,
/* 392 */   	ANALOG_1_BUS_D,
/* 393 */   	ANALOG_2_BUS_A,
/* 394 */   	ANALOG_2_BUS_B,
/* 395 */   	ANALOG_2_BUS_C,
/* 396 */   	ANALOG_2_BUS_D,
/* 397 */   	FX_BUS0,
/* 398 */   	FX_BUS2,
/* 399 */   	ANALOG_BUS_MACRO,
/* 400 */   	ANALOG_1_FILTER,
/* 401 */   	ANALOG_2_FILTER,
/* 402 */   	ANALOG_1_EXCITER,
/* 403 */   	ANALOG_2_EXCITER,
/* 404 */   	ANALOG_INPUT_DISABLE,
/* 405 */   	COMP_CONTROL0,
/* 406 */   	LOCAL_XPOSE,	

Parameter numbers 407 and greater are sent as Parameter Change Messages
SR Expanded. These are ignored by the Wavestation keyboard and A/D.

The SR adds a number of new parameters. Some will be useful to you as a
developer; others were added for the user interface or internal
debugging, and are best left alone. 407 through 409 allow you to
initiate dumps as if you were doing so from the front panel. These were
added for the user interface, and its probably best to use the dump
requests instead.

/* 407 */   	SYSEX_XMIT_TYPE,
/* 408 */   	SYSEX_XMIT_BANK,
/* 409 */   	SYSEX_XMIT_NUM,

410 through 424 should look similar to you, as they duplicate the
functions of pre-existing parameters. These were added for the user
interface alone, and the SR will accept all of the old parameters just
fine.

/* 410 */   	WAVE_BANK,
/* 411 */   	WAVE_NUM,
/* 412 */   	WAVE_NAME,
/* 413 */   	WAVE_LEVEL,
/* 414 */   	WAVE_TUNE_COARSE,
/* 415 */   	WAVE_TUNE_FINE,
/* 416 */   	WAVE_TUNE_SLOPE,
/* 417 */   	WAVE_BUS_A,
/* 418 */   	WAVE_BUS_B,
/* 419 */   	WAVE_BUS_C,
/* 420 */   	WAVE_BUS_D,
/* 421 */   	MIX_ENV_RATE_1,
/* 422 */   	MIX_ENV_RATE_2,
/* 423 */   	MIX_ENV_RATE_3,
/* 424 */   	MIX_ENV_RATE_4,

The Solo Status parameters are read-only.

/* 425 */   	PART_SOLO_STATUS,
/* 426 */   	WS_STEP_SOLO_STATUS,

Params 427-428 can be used to change the Mode of the SR, just as if the
front panel PERF or MULTI button were pressed.

/* 427 */   	PERF_MIDI_MODE,
/* 428 */   	MULTI_MIDI_MODE,

If you want to play the demos via SysEx (possible but unlikely), use 429
to select the desired demo sequence, and then use 451
(EXECUTE_PLAY_DEMO) to start playback.

/* 429 */   	CURRENT_DEMO,

430 is read-only.

/* 430 */   	CURRENT_DEMO_NAME,

WAVE_WAVE was added for the user interface only. You can safely ignore
it, but first, for fun, read it aloud a couple of times using the
correct inflection (WAVE-wave).

/* 431 */   	WAVE_WAVE,

432 and 433 are the new Multiset parameters. The MULTISET_OUTPUT applies
to the current channel.

/* 432 */   	MULTISET_NAME,
/* 433 */   	MULTISET_OUTPUT,

434-436 are the new MIDI parameters. 434 sets the number of channels
received in Multi mode. 435 determines whether or not controllers, along
with notes, should be reset if active sensing is discontinued. 436
determines whether or not Bank Select messages are recognized. See the
Reference Guide for more details.

/* 434 */   	NUM_MULTI_CHANS,
/* 435 */   	RESET_ACT_SENS_CONTROL,
/* 436 */   	REC_BANK_CHANGE

437 -449 are read-only parameters intended for internal debugging. Note
that the SR will respond to a Device Inquiry Request, which includes the
version number.

/* 437 */   	KSD_ENABLE,
/* 438 */   	VERSION_NUM,
/* 439 */   	VERSION_DATE,
/* 440 */   	ERROR_NUMBER,
/* 441 */   	TASK_NUMBER,
/* 442 */   	STATUS_REGISTER,
/* 443 */   	CRASH_LEVEL,
/* 444 */   	PROGRAM_COUNTER,
/* 445 */   	C_PROGRAM_COUNTER,
/* 446 */   	STACK_POINTER,
/* 447 */   	USER_STACK_POINTER,
/* 448 */   	POOL_LEVEL,
/* 449 */   	POOL_LEVEL_MAX,

We affectionately refer to 450 as the Bill and Ted parameter.

/* 450 */   	BOGUS_PARAM,

451 to the end are the executable parameters. A value of 1 executes the
command, just like pressing YES on the front panel; a value of 0 is
the same as pressing NO (you shouldnt need to use the latter).

/* 451 */   	EXECUTE_PLAY_DEMO,
/* 452 */   	EXECUTE_SOLO_PART,
/* 453 */   	EXECUTE_INIT_PART,
/* 454 */   	EXECUTE_COPY_PART,
/* 455 */   	EXECUTE_COPY_MODULES,
/* 456 */   	EXECUTE_COPY_FX_ALL,
/* 457 */   	EXECUTE_COPY_FX_PARAMS,
/* 458 */   	EXECUTE_COPY_FX_MIX,
/* 459 */   	EXECUTE_INSERT_WS_STEP,
/* 460 */   	EXECUTE_DELETE_WS_STEP,
/* 461 */   	EXECUTE_ZONE_KEY_LAYER,
/* 462 */   	EXECUTE_ZONE_KEY_SPLIT,
/* 463 */   	EXECUTE_ZONE_VEL_SWITCH,
/* 464 */   	EXECUTE_ZONE_VEL_LAYER,
/* 465 */   	EXECUTE_SOLO_WS_STEP,

Please note that there is a problem with the WRITE command,
as discussed in the document "Wavestation Developer FAQ."

/* 466 */   	EXECUTE_WRITE,
/* 467 */   	EXECUTE_COMPARE,
/* 468 */   	EXECUTE_INIT_PATCH,
/* 469 */   	EXECUTE_CENTER_POINT,
/* 470 */   	EXECUTE_SYSEX_XMIT,
/* 471 */   	EXECUTE_SYSEX_MULTI_DUMP,
/* 472 */   	EXECUTE_BANK_MOVE,
/* 473 */   	EXECUTE_FORMAT_CARD,
/* 474 */   	EXECUTE_WAVESEQ_COMPAND,
/* 475 */   	EXECUTE_WAVESEQ_INIT,
/* 476 */   	EXECUTE_WAVESEQ_COPY,
/* 477 */   	EXECUTE_WAVESEQ_STEP_COPY,
/* 478 */   	EXECUTE_ENABLE_SHOW,

479 initializes all RAM to default parameters. 

/* 479 */   	EXECUTE_INIT_RAM,

480 and 481 load the contents of a card into RAM, and then spit the data
out again, respectively. These will make complete and utter hash of the
SRs Multisets, Performances, etc. We considered giving these functions
their own large, red button on the front panel, labeled Do Not Touch,
but then thought the better of it.

/* 480 */   	EXECUTE_LOAD_DIAG,
/* 481 */   	EXECUTE_SAVE_DIAG,

482 duplicates the user interface EXIT function.

/* 482 */   	EXECUTE_EXIT_LEVEL,

Special Bonus Parameter 483 was added after the printing of the first
version of the SR Reference Guide.

/* 483 */   EXECUTE_INIT_PERF
/* 484 */   	PARAM_END     /* Must be last */
